package com.shujia.five;

public class OperatorDemo5 {

    /*
    逻辑运算符
    &—逻辑与(并且)	| —逻辑或(或者)
    && —短路与
    || —短路或
    在开发中一般优先使用短路的 &&, ||
     */
    public static void main(String[] args) {

//        int m = 10;
//        // false & true -> false
//        boolean r1 = (m++) < 5 & (m++) < 20;
//
//        System.out.println(r1);
//        // 12, 做了2次自增
//        System.out.println(m);


        // 左右都是true的话结果是true
        // 左右其中一个是false, 结果就是false
        // && —短路与: 左边如果是false, 就不会在计算右边, 直接返回false
        int m = 10;
        boolean r1 = (m++) < 5 && (m++) < 20;

        System.out.println(r1);
        // 11, 做了1次自增, 右边的表达式不会计算
        System.out.println(m);

        System.out.println("-------------------");

        // || —短路或
        // 如果左右两边其中一个是true结果就是true
        // 只要左边是true, 就可以确定结果就是true
        // 如果表达式左边是true, 不会在计算右边
        m = 10;
        r1 = (m++) > 5 || (m++) < 20;
        System.out.println(r1);
        System.out.println(m);

        // 3<x<6
        int x = 10;
        // boolean result = 3 < x < 6;
        // 使用与运算
        boolean result = 3 < x && x < 6;
        System.out.println(result);

    }
}
